{
  "nodes": [
    {
      "id": "startAgentflow_0",
      "type": "agentFlow",
      "position": {
        "x": 108,
        "y": 99.5
      },
      "data": {
        "id": "startAgentflow_0",
        "label": "Start",
        "version": 1.1,
        "name": "startAgentflow",
        "type": "Start",
        "color": "#7EE787",
        "hideInput": true,
        "baseClasses": [
          "Start"
        ],
        "category": "Agent Flows",
        "description": "Starting point of the agentflow",
        "inputParams": [
          {
            "label": "Input Type",
            "name": "startInputType",
            "type": "options",
            "options": [
              {
                "label": "Chat Input",
                "name": "chatInput",
                "description": "Start the conversation with chat input"
              },
              {
                "label": "Form Input",
                "name": "formInput",
                "description": "Start the workflow with form inputs"
              }
            ],
            "default": "chatInput",
            "id": "startAgentflow_0-input-startInputType-options",
            "display": true
          },
          {
            "label": "Form Title",
            "name": "formTitle",
            "type": "string",
            "placeholder": "Please Fill Out The Form",
            "show": {
              "startInputType": "formInput"
            },
            "id": "startAgentflow_0-input-formTitle-string",
            "display": false
          },
          {
            "label": "Form Description",
            "name": "formDescription",
            "type": "string",
            "placeholder": "Complete all fields below to continue",
            "show": {
              "startInputType": "formInput"
            },
            "id": "startAgentflow_0-input-formDescription-string",
            "display": false
          },
          {
            "label": "Form Input Types",
            "name": "formInputTypes",
            "description": "Specify the type of form input",
            "type": "array",
            "show": {
              "startInputType": "formInput"
            },
            "array": [
              {
                "label": "Type",
                "name": "type",
                "type": "options",
                "options": [
                  {
                    "label": "String",
                    "name": "string"
                  },
                  {
                    "label": "Number",
                    "name": "number"
                  },
                  {
                    "label": "Boolean",
                    "name": "boolean"
                  },
                  {
                    "label": "Options",
                    "name": "options"
                  }
                ],
                "default": "string"
              },
              {
                "label": "Label",
                "name": "label",
                "type": "string",
                "placeholder": "Label for the input"
              },
              {
                "label": "Variable Name",
                "name": "name",
                "type": "string",
                "placeholder": "Variable name for the input (must be camel case)",
                "description": "Variable name must be camel case. For example: firstName, lastName, etc."
              },
              {
                "label": "Add Options",
                "name": "addOptions",
                "type": "array",
                "show": {
                  "formInputTypes[$index].type": "options"
                },
                "array": [
                  {
                    "label": "Option",
                    "name": "option",
                    "type": "string"
                  }
                ]
              }
            ],
            "id": "startAgentflow_0-input-formInputTypes-array",
            "display": false
          },
          {
            "label": "Ephemeral Memory",
            "name": "startEphemeralMemory",
            "type": "boolean",
            "description": "Start fresh for every execution without past chat history",
            "optional": true,
            "id": "startAgentflow_0-input-startEphemeralMemory-boolean",
            "display": true
          },
          {
            "label": "Flow State",
            "name": "startState",
            "description": "Runtime state during the execution of the workflow",
            "type": "array",
            "optional": true,
            "array": [
              {
                "label": "Key",
                "name": "key",
                "type": "string",
                "placeholder": "Foo"
              },
              {
                "label": "Value",
                "name": "value",
                "type": "string",
                "placeholder": "Bar",
                "optional": true
              }
            ],
            "id": "startAgentflow_0-input-startState-array",
            "display": true
          },
          {
            "label": "Persist State",
            "name": "startPersistState",
            "type": "boolean",
            "description": "Persist the state in the same session",
            "optional": true,
            "id": "startAgentflow_0-input-startPersistState-boolean",
            "display": true
          }
        ],
        "inputAnchors": [],
        "inputs": {
          "startInputType": "chatInput",
          "formTitle": "",
          "formDescription": "",
          "formInputTypes": "",
          "startEphemeralMemory": "",
          "startState": [
            {
              "key": "answers",
              "value": ""
            }
          ],
          "startPersistState": ""
        },
        "outputAnchors": [
          {
            "id": "startAgentflow_0-output-startAgentflow",
            "label": "Start",
            "name": "startAgentflow"
          }
        ],
        "outputs": {},
        "selected": false
      },
      "width": 103,
      "height": 66,
      "positionAbsolute": {
        "x": 108,
        "y": 99.5
      },
      "selected": false,
      "dragging": false
    },
    {
      "id": "llmAgentflow_0",
      "position": {
        "x": 251,
        "y": 96.25
      },
      "data": {
        "id": "llmAgentflow_0",
        "label": "Generate Structured Output",
        "version": 1,
        "name": "llmAgentflow",
        "type": "LLM",
        "color": "#64B5F6",
        "baseClasses": [
          "LLM"
        ],
        "category": "Agent Flows",
        "description": "Large language models to analyze user-provided inputs and generate responses",
        "inputParams": [
          {
            "label": "Model",
            "name": "llmModel",
            "type": "asyncOptions",
            "loadMethod": "listModels",
            "loadConfig": true,
            "id": "llmAgentflow_0-input-llmModel-asyncOptions",
            "display": true
          },
          {
            "label": "Messages",
            "name": "llmMessages",
            "type": "array",
            "optional": true,
            "acceptVariable": true,
            "array": [
              {
                "label": "Role",
                "name": "role",
                "type": "options",
                "options": [
                  {
                    "label": "System",
                    "name": "system"
                  },
                  {
                    "label": "Assistant",
                    "name": "assistant"
                  },
                  {
                    "label": "Developer",
                    "name": "developer"
                  },
                  {
                    "label": "User",
                    "name": "user"
                  }
                ]
              },
              {
                "label": "Content",
                "name": "content",
                "type": "string",
                "acceptVariable": true,
                "generateInstruction": true,
                "rows": 4
              }
            ],
            "id": "llmAgentflow_0-input-llmMessages-array",
            "display": true
          },
          {
            "label": "Enable Memory",
            "name": "llmEnableMemory",
            "type": "boolean",
            "description": "Enable memory for the conversation thread",
            "default": true,
            "optional": true,
            "id": "llmAgentflow_0-input-llmEnableMemory-boolean",
            "display": true
          },
          {
            "label": "Memory Type",
            "name": "llmMemoryType",
            "type": "options",
            "options": [
              {
                "label": "All Messages",
                "name": "allMessages",
                "description": "Retrieve all messages from the conversation"
              },
              {
                "label": "Window Size",
                "name": "windowSize",
                "description": "Uses a fixed window size to surface the last N messages"
              },
              {
                "label": "Conversation Summary",
                "name": "conversationSummary",
                "description": "Summarizes the whole conversation"
              },
              {
                "label": "Conversation Summary Buffer",
                "name": "conversationSummaryBuffer",
                "description": "Summarize conversations once token limit is reached. Default to 2000"
              }
            ],
            "optional": true,
            "default": "allMessages",
            "show": {
              "llmEnableMemory": true
            },
            "id": "llmAgentflow_0-input-llmMemoryType-options",
            "display": true
          },
          {
            "label": "Window Size",
            "name": "llmMemoryWindowSize",
            "type": "number",
            "default": "20",
            "description": "Uses a fixed window size to surface the last N messages",
            "show": {
              "llmMemoryType": "windowSize"
            },
            "id": "llmAgentflow_0-input-llmMemoryWindowSize-number",
            "display": false
          },
          {
            "label": "Max Token Limit",
            "name": "llmMemoryMaxTokenLimit",
            "type": "number",
            "default": "2000",
            "description": "Summarize conversations once token limit is reached. Default to 2000",
            "show": {
              "llmMemoryType": "conversationSummaryBuffer"
            },
            "id": "llmAgentflow_0-input-llmMemoryMaxTokenLimit-number",
            "display": false
          },
          {
            "label": "Input Message",
            "name": "llmUserMessage",
            "type": "string",
            "description": "Add an input message as user message at the end of the conversation",
            "rows": 4,
            "optional": true,
            "acceptVariable": true,
            "show": {
              "llmEnableMemory": true
            },
            "id": "llmAgentflow_0-input-llmUserMessage-string",
            "display": true
          },
          {
            "label": "Return Response As",
            "name": "llmReturnResponseAs",
            "type": "options",
            "options": [
              {
                "label": "User Message",
                "name": "userMessage"
              },
              {
                "label": "Assistant Message",
                "name": "assistantMessage"
              }
            ],
            "default": "userMessage",
            "id": "llmAgentflow_0-input-llmReturnResponseAs-options",
            "display": true
          },
          {
            "label": "JSON Structured Output",
            "name": "llmStructuredOutput",
            "description": "Instruct the LLM to give output in a JSON structured schema",
            "type": "array",
            "optional": true,
            "acceptVariable": true,
            "array": [
              {
                "label": "Key",
                "name": "key",
                "type": "string"
              },
              {
                "label": "Type",
                "name": "type",
                "type": "options",
                "options": [
                  {
                    "label": "String",
                    "name": "string"
                  },
                  {
                    "label": "String Array",
                    "name": "stringArray"
                  },
                  {
                    "label": "Number",
                    "name": "number"
                  },
                  {
                    "label": "Boolean",
                    "name": "boolean"
                  },
                  {
                    "label": "Enum",
                    "name": "enum"
                  },
                  {
                    "label": "JSON Array",
                    "name": "jsonArray"
                  }
                ]
              },
              {
                "label": "Enum Values",
                "name": "enumValues",
                "type": "string",
                "placeholder": "value1, value2, value3",
                "description": "Enum values. Separated by comma",
                "optional": true,
                "show": {
                  "llmStructuredOutput[$index].type": "enum"
                }
              },
              {
                "label": "JSON Schema",
                "name": "jsonSchema",
                "type": "code",
                "placeholder": "{\n    \"answer\": {\n        \"type\": \"string\",\n        \"description\": \"Value of the answer\"\n    },\n    \"reason\": {\n        \"type\": \"string\",\n        \"description\": \"Reason for the answer\"\n    },\n    \"optional\": {\n        \"type\": \"boolean\"\n    },\n    \"count\": {\n        \"type\": \"number\"\n    },\n    \"children\": {\n        \"type\": \"array\",\n        \"items\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"value\": {\n                    \"type\": \"string\",\n                    \"description\": \"Value of the children's answer\"\n                }\n            }\n        }\n    }\n}",
                "description": "JSON schema for the structured output",
                "optional": true,
                "show": {
                  "llmStructuredOutput[$index].type": "jsonArray"
                }
              },
              {
                "label": "Description",
                "name": "description",
                "type": "string",
                "placeholder": "Description of the key"
              }
            ],
            "id": "llmAgentflow_0-input-llmStructuredOutput-array",
            "display": true
          },
          {
            "label": "Update Flow State",
            "name": "llmUpdateState",
            "description": "Update runtime state during the execution of the workflow",
            "type": "array",
            "optional": true,
            "acceptVariable": true,
            "array": [
              {
                "label": "Key",
                "name": "key",
                "type": "asyncOptions",
                "loadMethod": "listRuntimeStateKeys",
                "freeSolo": true
              },
              {
                "label": "Value",
                "name": "value",
                "type": "string",
                "acceptVariable": true,
                "acceptNodeOutputAsVariable": true
              }
            ],
            "id": "llmAgentflow_0-input-llmUpdateState-array",
            "display": true
          }
        ],
        "inputAnchors": [],
        "inputs": {
          "llmModel": "chatOpenAI",
          "llmMessages": [
            {
              "role": "system",
              "content": "<p>You are helpful assistant.</p><p>Today's date is <span class=\"variable\" data-type=\"mention\" data-id=\"current_date_time\" data-label=\"current_date_time\">{{ current_date_time }}</span> </p>"
            }
          ],
          "llmEnableMemory": true,
          "llmMemoryType": "allMessages",
          "llmUserMessage": "",
          "llmReturnResponseAs": "userMessage",
          "llmStructuredOutput": [
            {
              "key": "answers",
              "type": "jsonArray",
              "enumValues": "",
              "jsonSchema": "{\n  \"name\": {\n    \"type\": \"string\",\n    \"required\": true,\n    \"description\": \"Name of the event\"\n  },\n  \"date\": {\n    \"type\": \"string\",\n    \"required\": true,\n    \"description\": \"Date of the event\"\n  },\n  \"location\": {\n    \"type\": \"string\",\n    \"required\": true,\n    \"description\": \"Location of the event\"\n  }\n}",
              "description": "answer to user query"
            }
          ],
          "llmUpdateState": [
            {
              "key": "answers",
              "value": "<p><span class=\"variable\" data-type=\"mention\" data-id=\"output.answers\" data-label=\"output.answers\">{{ output.answers }}</span> </p>"
            }
          ],
          "llmModelConfig": {
            "cache": "",
            "modelName": "gpt-4o-mini",
            "temperature": 0.9,
            "streaming": true,
            "maxTokens": "",
            "topP": "",
            "frequencyPenalty": "",
            "presencePenalty": "",
            "timeout": "",
            "strictToolCalling": "",
            "stopSequence": "",
            "basepath": "",
            "proxyUrl": "",
            "baseOptions": "",
            "allowImageUploads": "",
            "imageResolution": "low",
            "reasoningEffort": "medium",
            "llmModel": "chatOpenAI"
          }
        },
        "outputAnchors": [
          {
            "id": "llmAgentflow_0-output-llmAgentflow",
            "label": "LLM",
            "name": "llmAgentflow"
          }
        ],
        "outputs": {},
        "selected": false
      },
      "type": "agentFlow",
      "width": 252,
      "height": 72,
      "selected": false,
      "positionAbsolute": {
        "x": 251,
        "y": 96.25
      },
      "dragging": false
    },
    {
      "id": "iterationAgentflow_0",
      "position": {
        "x": 538.5,
        "y": 7.25
      },
      "data": {
        "id": "iterationAgentflow_0",
        "label": "Loop through JSON array",
        "version": 1,
        "name": "iterationAgentflow",
        "type": "Iteration",
        "color": "#9C89B8",
        "baseClasses": [
          "Iteration"
        ],
        "category": "Agent Flows",
        "description": "Execute the nodes within the iteration block through N iterations",
        "inputParams": [
          {
            "label": "Array Input",
            "name": "iterationInput",
            "type": "string",
            "description": "The input array to iterate over",
            "acceptVariable": true,
            "rows": 4,
            "id": "iterationAgentflow_0-input-iterationInput-string",
            "display": true
          }
        ],
        "inputAnchors": [],
        "inputs": {
          "iterationInput": "<p><span class=\"variable\" data-type=\"mention\" data-id=\"$flow.state.answers\" data-label=\"$flow.state.answers\">{{ $flow.state.answers }}</span> </p>"
        },
        "outputAnchors": [
          {
            "id": "iterationAgentflow_0-output-iterationAgentflow",
            "label": "Iteration",
            "name": "iterationAgentflow"
          }
        ],
        "outputs": {},
        "selected": false
      },
      "type": "iteration",
      "width": 300,
      "height": 250,
      "selected": false,
      "positionAbsolute": {
        "x": 538.5,
        "y": 7.25
      },
      "dragging": false,
      "resizing": false
    },
    {
      "id": "httpAgentflow_0",
      "position": {
        "x": 91,
        "y": 87
      },
      "data": {
        "id": "httpAgentflow_0",
        "label": "Call HTTP",
        "version": 1.1,
        "name": "httpAgentflow",
        "type": "HTTP",
        "color": "#FF7F7F",
        "baseClasses": [
          "HTTP"
        ],
        "category": "Agent Flows",
        "description": "Send a HTTP request",
        "inputParams": [
          {
            "label": "HTTP Credential",
            "name": "credential",
            "type": "credential",
            "credentialNames": [
              "httpBasicAuth",
              "httpBearerToken",
              "httpApiKey"
            ],
            "optional": true,
            "id": "httpAgentflow_0-input-credential-credential",
            "display": true
          },
          {
            "label": "Method",
            "name": "method",
            "type": "options",
            "options": [
              {
                "label": "GET",
                "name": "GET"
              },
              {
                "label": "POST",
                "name": "POST"
              },
              {
                "label": "PUT",
                "name": "PUT"
              },
              {
                "label": "DELETE",
                "name": "DELETE"
              },
              {
                "label": "PATCH",
                "name": "PATCH"
              }
            ],
            "default": "GET",
            "id": "httpAgentflow_0-input-method-options",
            "display": true
          },
          {
            "label": "URL",
            "name": "url",
            "type": "string",
            "id": "httpAgentflow_0-input-url-string",
            "display": true
          },
          {
            "label": "Headers",
            "name": "headers",
            "type": "array",
            "acceptVariable": true,
            "array": [
              {
                "label": "Key",
                "name": "key",
                "type": "string",
                "default": ""
              },
              {
                "label": "Value",
                "name": "value",
                "type": "string",
                "default": "",
                "acceptVariable": true
              }
            ],
            "optional": true,
            "id": "httpAgentflow_0-input-headers-array",
            "display": true
          },
          {
            "label": "Query Params",
            "name": "queryParams",
            "type": "array",
            "acceptVariable": true,
            "array": [
              {
                "label": "Key",
                "name": "key",
                "type": "string",
                "default": ""
              },
              {
                "label": "Value",
                "name": "value",
                "type": "string",
                "default": "",
                "acceptVariable": true
              }
            ],
            "optional": true,
            "id": "httpAgentflow_0-input-queryParams-array",
            "display": true
          },
          {
            "label": "Body Type",
            "name": "bodyType",
            "type": "options",
            "options": [
              {
                "label": "JSON",
                "name": "json"
              },
              {
                "label": "Raw",
                "name": "raw"
              },
              {
                "label": "Form Data",
                "name": "formData"
              },
              {
                "label": "x-www-form-urlencoded",
                "name": "xWwwFormUrlencoded"
              }
            ],
            "optional": true,
            "id": "httpAgentflow_0-input-bodyType-options",
            "display": true
          },
          {
            "label": "Body",
            "name": "body",
            "type": "string",
            "acceptVariable": true,
            "rows": 4,
            "show": {
              "bodyType": [
                "raw",
                "json"
              ]
            },
            "optional": true,
            "id": "httpAgentflow_0-input-body-string",
            "display": true
          },
          {
            "label": "Body",
            "name": "body",
            "type": "array",
            "acceptVariable": true,
            "show": {
              "bodyType": [
                "xWwwFormUrlencoded",
                "formData"
              ]
            },
            "array": [
              {
                "label": "Key",
                "name": "key",
                "type": "string",
                "default": ""
              },
              {
                "label": "Value",
                "name": "value",
                "type": "string",
                "default": "",
                "acceptVariable": true
              }
            ],
            "optional": true,
            "id": "httpAgentflow_0-input-body-array",
            "display": false
          },
          {
            "label": "Response Type",
            "name": "responseType",
            "type": "options",
            "options": [
              {
                "label": "JSON",
                "name": "json"
              },
              {
                "label": "Text",
                "name": "text"
              },
              {
                "label": "Array Buffer",
                "name": "arraybuffer"
              },
              {
                "label": "Raw (Base64)",
                "name": "base64"
              }
            ],
            "optional": true,
            "id": "httpAgentflow_0-input-responseType-options",
            "display": true
          }
        ],
        "inputAnchors": [],
        "inputs": {
          "method": "POST",
          "url": "http://localhost:5566/events",
          "headers": "",
          "queryParams": "",
          "bodyType": "json",
          "responseType": "json",
          "body": "<p><span class=\"variable\" data-type=\"mention\" data-id=\"$iteration\" data-label=\"$iteration\">{{ $iteration }}</span> </p>"
        },
        "outputAnchors": [
          {
            "id": "httpAgentflow_0-output-httpAgentflow",
            "label": "HTTP",
            "name": "httpAgentflow"
          }
        ],
        "outputs": {},
        "selected": false
      },
      "type": "agentFlow",
      "parentNode": "iterationAgentflow_0",
      "extent": "parent",
      "width": 137,
      "height": 66,
      "selected": false,
      "positionAbsolute": {
        "x": 629.5,
        "y": 94.25
      },
      "dragging": false
    }
  ],
  "edges": [
    {
      "source": "startAgentflow_0",
      "sourceHandle": "startAgentflow_0-output-startAgentflow",
      "target": "llmAgentflow_0",
      "targetHandle": "llmAgentflow_0",
      "data": {
        "sourceColor": "#7EE787",
        "targetColor": "#64B5F6",
        "isHumanInput": false
      },
      "type": "agentFlow",
      "id": "startAgentflow_0-startAgentflow_0-output-startAgentflow-llmAgentflow_0-llmAgentflow_0"
    },
    {
      "source": "llmAgentflow_0",
      "sourceHandle": "llmAgentflow_0-output-llmAgentflow",
      "target": "iterationAgentflow_0",
      "targetHandle": "iterationAgentflow_0",
      "data": {
        "sourceColor": "#64B5F6",
        "targetColor": "#9C89B8",
        "isHumanInput": false
      },
      "type": "agentFlow",
      "id": "llmAgentflow_0-llmAgentflow_0-output-llmAgentflow-iterationAgentflow_0-iterationAgentflow_0"
    }
  ]
}